package com.starinside.wp.handler;

import com.alibaba.fastjson.JSON;
import com.starinside.wp.listener.OpenAIEventSourceListener;
import com.unfbx.chatgpt.entity.chat.ChatCompletionResponse;
import com.unfbx.chatgpt.entity.chat.Message;
import lombok.extern.slf4j.Slf4j;
import okhttp3.Response;
import okhttp3.ResponseBody;
import okhttp3.sse.EventSource;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.CountDownLatch;
import java.util.stream.Collectors;

@Slf4j
public class ChatKefuListener extends OpenAIEventSourceListener {

    private
    List<String> buffer = new ArrayList<>();

    public List<String> getBuffer() {
        return buffer;
    }

    public void setBuffer(List<String> buffer) {
        this.buffer = buffer;
    }

    public CountDownLatch getLatch() {
        return latch;
    }

    public void setLatch(CountDownLatch latch) {
        this.latch = latch;
    }

    public List<Message> getMessages() {
        return messages;
    }

    public void setMessages(List<Message> messages) {
        this.messages = messages;
    }

    private
    CountDownLatch latch;

    private List<Message> messages;

    public ChatKefuListener(CountDownLatch latch, List<Message> messages) {
        super(null);

        this.latch = latch;
        this.messages = messages;
    }

    public void onOpen(EventSource eventSource, Response response) {
        log.info("OpenAI建立sse连接...");
    }

    public void onEvent(EventSource eventSource, String id, String type, String data) {
        log.info("OpenAI返回数据：{}", data);

        if (data.equals("[DONE]")) {
            log.info("OpenAI返回数据结束了");

            latch.countDown();
        }else {
            try {
                ChatCompletionResponse completions = JSON.parseObject(data, ChatCompletionResponse.class);
                String line = completions.getChoices().stream()
                        .map(o->o.getDelta())
                        .filter(o->o!=null && o.getContent() != null)
                        .map(o->o.getContent())
                        .collect(Collectors.joining());

//                log.debug("buffer add : {}" , line);

                buffer.add(line.trim());
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }

    public void onClosed(EventSource eventSource) {
        log.info("OpenAI关闭sse连接...");

        latch.countDown();
    }

    public void onFailure(EventSource eventSource, Throwable t, Response response) {
        try {
            if (Objects.isNull(response)) {
                log.error("OpenAI  sse连接异常:{}", t);
                eventSource.cancel();
            } else {
                ResponseBody body = response.body();
                if (Objects.nonNull(body)) {
                    log.error("OpenAI  sse连接异常data：{}，异常：{}", body.string(), t);
                } else {
                    log.error("OpenAI  sse连接异常data：{}，异常：{}", response, t);
                }

                eventSource.cancel();
            }
        } catch (Throwable var5) {
            var5.printStackTrace();
        }

        latch.countDown();
    }


    public static void main(String[] args){
        System.out.println(SYSTEM_PRELOAD);
    }

    public static final String SYSTEM_PRELOAD = "请阅读下面的材料，并且扮演“智慧小象”来回答问题：" +
            "公司名称：山西亿雅思文化传媒有限公司，成立于2013年。" +
            "    主营业务：托育中心、幼儿园、托幼信息化管理，覆盖0-6岁全龄段婴幼儿服务与教育。" +
            "    品牌和荣誉：紫丹教育幼教品牌、小象湾托育品牌，获得山西省托育服务示范机构等荣誉。\n" +
            "    公司文化：聚焦专业、创新价值、高效服务、拥抱变化。\n" +
            "    直营幼儿园数量：21所，托育中心5个，信息化管理平台2个。\n" +
            "    家庭服务：累计为30000余家庭提供托幼托育综合服务，7000余名婴幼儿在托育中心。\n" +
            "    教育理念：敬畏生命、尊重成长、成就卓越；儿童成长的援助者，品质教育的践行者。\n" +
            "    小象湾托育：国际先进托育服务理念，医保教结合，提供全日托、半日托、计时托等服务。\n" +
            "    信息化管理平台：紫丹教育信息化管理平台，涵盖园务管理、教育教学、财务管理、家园共育等多个版块。\n" +
            "    实训基地：潞城区托幼托育产教融合实训基地，规模庞大，包括多个业态实体运营中心。\n" +
            "    未来发展目标：全国布局0-6岁全龄段产业，建立托幼托育行业人才培养体系、认证体系，成为全国托幼托育行业第一梯队。\n" +
            "    战略思想：打造0-6岁全龄段儿童综合服务品牌，搭建托幼托育行业人才培养体系。\n" +
            "    中长期目标：通过直营+连锁+加盟的模式，占领山西市场，形成品牌效应和行业人才需求，成为具有影响力的托育品牌。\n" +
            "    短期目标：在山西市场立足，通过直营、加盟、合作等方式，迅速完成全省市级以上市场布局，将实训基地打造为托幼托育人才培养基地。" +
            "我的问题并不一定在这段参考资料里。";

//    public static final String SYSTEM_PRELOAD =
//            "以下是湖南海龙国际智能科技股份有限公司相关资料\n" +
//            "注册资本：3600万元。" +
//            "纳税人识别号：91430100668582709Y。" +
//            "企业法人：李波。" +
//            "企业联系方式：0731-84144108。" +
//            "商务合作方式：梁鲜博 15576648213。" +
//            "公司官网：https://www.hlgjzn.com/。" +
//            "总公司：湖南海龙国际智能科技股份有限公司。" +
//            "非独立核算分公司：湖南海龙国际智能科技股份有限公司长沙岳麓区分公司、湖南海龙国际智能科技股份有限公司贵州分公司、湖南海龙国际智能科技股份有限公司海南分公司。" +
//            "全资子公司：湖南海源伟业科技有限公司、湖南行迹智能科技有限公司、杭州海龙智城科技有限公司、贵州省海龙智城科技有限公司、深圳市海龙智联有限公司。" +
//            "控股子公司：黔南贵匀旅文产业发展有限责任公司、三明海龙智城智能科技有限公司。" +
//            "总部地址：目前公司办公地点在长沙市开福区伍家岭街道标志商务楼4楼，" +
//            "预计2023年8月份搬迁至 长沙市湘江新区岳麓区创源路12号海龙国际总部及智慧产业园。。" +
//            "企业介绍：" +
//            "湖南海龙国际智能科技股份有限公司简称“海龙科技”，海龙科技成立于2007年，公司通过AIoT技术在具体业务场景的落地应用，聚焦于科技赋能城市管理，科技服务社会民生，围绕强连接、高兼容、易延展和泛应用的产品理念，为客户提供自主研发的AIoT平台及AIoT解决方案，为人们营造更加智能、高效、便捷的工作、生活体验。应用市场涵盖社区、园区、旅游、医疗、教育、停车等行业领域及场景，具有丰富的行业经验与实施案例。\n" +
//            "企业愿景：做中国一流的智能产业高科技企业。" +
//            "企业使命：专注于企业持续化发展，让科技造福人类。" +
//            "企业精神：以此为生，精于此道；契约精神，结果交换。" +
//            "企业经营理念：口碑源于品质，专业炼就品牌。" +
//            "企业核心价值观：责任共担，荣誉共享，为海龙人搭建实现人生价值的平台。" +
//            "产品及服务:" +
//            "1 AIoT数据驾驶舱:" +
//            "定位于社区、 园区、 旅游、 医疗、 教育等各行业领域的智慧场景落地， 以 “云-边-端”一体化能力预封装各行业应用及功能， 提供包括安防管理、 通行管理、 环境管理、 能源管理、 资产管理等模块， 按需选择， 开箱即用\n" +
//            "2 AIoT能力中枢底座:" +
//                    "AI中枢：构建人工智能中枢提升城市“智”治力；" +
//                    "数据中枢：打造开放共享的数据支撑底座；" +
//                    "物联中枢：构建全域感知的智慧物联体系；" +
//                    "业务中枢：推进城市共性服务能力共享共用。" +
////            "AI中枢一构建人工智能中枢提升城市“智”治力。" +
////            "通过 AI 中枢建设， 建立视频智能解析能力， 实现 A 算法算力资源统一管理和按需调配。 依托城市天网、 雪亮等视频资源.对重点区域的视频感知源进行算法分析，为政府提供城市管理、综治、应急等异常、违规事件的发现、采集及处置智能化支撑。\n" +
////            "数据中枢一打造开放共享的数据支撑底座。" +
////            "构建数据全流程一体化数据中枢， 实现从数据采集、 处理、分析、服务到应用的全流程贯通， 形成全区覆盖、 技术领先服务一流的大数据支撑体系， 进一步沉淀城市数据资产， 统一数据标准规范， 深挖数据潜在价值， 提供权威数据支撑。\n" +
////            "物联中枢一构建全域感知的智慧物联体系。" +
////            "依托城市电子政务外网构建 “纵向贯通、 横向集成、 分级应用、安全可” 的物联传感数据融合接入平台， 对城市视频、图像等各类传感数据资源进行整合， 并通过汇聚、 转发等基本功能为政府提供服务， 实现物联传感数据资源的高度共享和跨区域调用。\n" +
////            "业务中枢一推进城市共性服务能力共享共用。" +
////            "建立开放融合的业务中枢平台，围绕智慧城市各类业务应用的共性建设需求，制定应用服务组件标准， 实现组件服务的统一发布和全生命周期管理。。" +
//            "3 AIoT移动应用 依托智能硬件、智能传感器、数据处理平台等以智慧社区、智慧园区的城市基本单元为主导开发领域，逐步沉淀数据为智慧城市提供基础数据能力支撑，并通过城市能力中枢赋能更多智慧应用再建设。\n" +
//            "产品：" +
//            "智慧社区：《谊邻》、《谊家》、《益通百通》、《建工德顺》、《大洋红树湾》、《金茂府》、《爱家  爱生活》、《豪管家》等；" +
//            "智慧旅游：《景区智游AR》、《森林旅游与康养》、《梅花山旅游》、《黔南游》等。" +
//            "城市交通：《湘江新区智能泊车》、《贵阳共享停车》 等；" +
//            "电子商务：《福满星城》、《掌上农博》等；" +
//            "智慧教育：《和校园》；" +
//            "更多：《湖南环境与质量》、《智慧安监及城管》、《汉阳人才产业园》等。" +
////            "4.行业解决方案：" +
////            "为客户提供自主研发的AIOT软件平台及行业解决方案，为人们营造更加智能、高效、便捷的工作、生活体验。应用市场涵盖社区、园区、旅游、医疗、教育、停车等行业领域及场景，具有丰富的行业经验与实施案例。" +
////            "1.智慧社区：推动业主自治、打造零物业费。" +
////            "2.智慧园区：" +
////            "3.智慧文旅：" +
////            "4.智慧医疗：通过大数据、云计算、5G应用等技术深度融合，打造智慧医院大数据平台，提供先进的信息化、智能化整体解决方案。" +
////            "5.智慧教育：围绕教、学、管、测、评、服六个方面，打造健康、安全、高效、创新的智慧校园。" +
////            "6.智慧酒店：颠覆传统酒店设计理念与经营模式，专注于物联网、大数据、人工智能等技术进行革新升级。" +
////            "7.智慧停车" +
////            "8.智慧建筑" +
//            "5.核心技术：" +
//            "基于深度强化学习的集成式旅游资源智能推荐技术；" +
//            "基于客流态势感知的景区游览车智能调度技术；" +
//            "结合三维建模和软件控制的虚拟漫游技术；" +
//            "面向景区应急指挥调度的软件技术；" +
//            "基于室内定位的车位级导航技术；" +
//            "基于多目标优化的车位分配技术；" +
//            "基于计算机视觉的停车场智能导流技术；" +
//            "纯软件支持的增强现实（AR）反向寻车技术；" +
//            "软件适配器技术；" +
//            "物联网应用服务平台；" +
//            "6.产品特性：" +
//            "      强连接、高兼容、易延展和泛应用指的是海龙科技智慧物联应用服务平台和一系列AIOT应用服务软件产品的特性。" +
//            "      其中智慧物联平台包括梅花山智慧旅游综合管控平台、桃花源智慧旅游综合管控平台、黔南州全域旅游大数据平台等。" +
//            "      AIOT应用服务软件产品包括谊家智慧社区软件、谊邻智慧社区软件、和校园智慧教育软件、湖南森林旅游与康养智慧旅游等移动终端软件及上述所说平台。" +
//            "      强连接、高兼容指的是软件产品连接、兼容硬件的能力很强，例如谊家二维码开门是需要获取门禁设备的二维码控制权限，对门禁设备来说，谊家有很多种产品型号的选择，且连接硬件设备后兼容性很高，不容易出错。另外高兼容的特性还体现在软件产品能适配不同的应用终端和机型。" +
//            "      易延展、泛应用指的是软件产品升级迭代功能的延展、不同的软件功能模块可以快速组合延展出新的软件能力很强，可以广泛应用到各个行业。本质上是因为软件以低代码的形式开发，各个功能模块打包封装，以托拉拽的形式快速组合各种功能模块形成新的软件，这里也体现了各功能模块之间高兼容的特性。另外泛应用也指的是“泛在应用”，泛在这个词具备无时不刻、无所不在、无所不包、无所不能等基本特征，以在任何时间、任何地点可以连接任何人和任何物，泛在应用最具体的表现是AIOT技术在不同的场景之间的应用，例如谊家软件打通停车无感支付场景的AIOT技术，同样可以应用到公交、地铁支付，又或电子标签系统在小区电动车识别管理场景中的AIOT技术同样可以应用到高速汽车识别、停车场汽车识别当中，直至所有的产品和解决方案都被融入到清晰可控的AIOT技术服务中。" +
//            "7.核心产品介绍：" +
//            "“谊邻”智慧社区，通过在小区导入物物相联、人物相联、人人相联的“谊邻”AIOT物联网软件，" +
//            "以让更多小区实现“业主自治、零物业费”为使命，协助小区居民建立“三会一部”小区运管组织，" +
//            "协助完成合作物业公司的选聘。并用与之相匹配的具有“财务公开、议事大厅”等功能的“谊邻”系统，" +
//            "为海龙科技首创的将传统物业和商业相融合的社区运营新模式赋能，" +
//            "打造出具有“零物业费、消费和就业一体”的社区生活服务生态圈。" +
//            "实现小区运营高效能、有温度、自生长的特征。"
//         ;
}
